﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ecommerce.Model;
using System.Web.UI.HtmlControls;
using Ecommerce.Web.Code;

namespace Ecommerce.Web.UserControl
{
    public partial class VendaCruzada : System.Web.UI.UserControl
    {
        private ProdutoModel _produtoModel = new ProdutoModel();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string codigoProduto = Request.QueryString["codigo"];
                this.CarregarProdutosInteresse(Server.UrlDecode(codigoProduto));
            }
        }

        private void CarregarProdutosInteresse(string codigoProduto)
        {
            var produto = _produtoModel.ObterPorCodigo(codigoProduto);
            List<tb_pro_produto> lista = _produtoModel.ListarProdutosVendaCruzada(produto.pro_idt_produto);

            if (lista.Count > 0)
            {
                if (lista.Count > 3)
                    lista = lista.Take(3).ToList();

                dlProdutoInteresse.DataSource = lista;
                dlProdutoInteresse.DataBind();
            }
        }

        protected void dlProdutoInteresse_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                tb_pro_produto produto = (tb_pro_produto)e.Item.DataItem;

                Image imgProduto = (Image)e.Item.FindControl("imgProduto");
                Label lblNome = (Label)e.Item.FindControl("lblNome");
                Label lblPreco = (Label)e.Item.FindControl("lblPreco");
                HtmlAnchor lkImagem = (HtmlAnchor)e.Item.FindControl("lkImagem");
                Button btnDetalhes = (Button)e.Item.FindControl("btnDetalhes");
                Button btnAdicionar = (Button)e.Item.FindControl("btnAdicionar");

                lkImagem.HRef = "~/Produtos/Detalhes.aspx?codigo=" + Server.UrlEncode(produto.pro_cod_produto);
                
                //if (this.TipoUsuarioLogado == TipoPessoa.PFI || this.TipoUsuarioLogado == TipoPessoa.PJU)
                //    liPreco.Text = ProdutoModel.CalcularDesconto(produto, false, 2, produto.pro_vlr_preco_consumidor).ToString("c");
                //else
                //    liPreco.Text = ProdutoModel.CalcularDesconto(produto, false, 2, produto.pro_vlr_preco_revenda).ToString("c");

                lblNome.Text = produto.pro_nom_produto;

                tb_ipr_imagem_produto imagemProduto = produto.tb_ipr_imagem_produto.Where(x => x.ipr_num_ordem_imagem.Equals(1)).FirstOrDefault();

                if (imagemProduto != null)
                    imgProduto.ImageUrl = imagemProduto.ipr_des_caminho_virtual;
                else
                    imgProduto.ImageUrl = "~/images/imagem_nao_disp_home.jpg";

                btnAdicionar.CommandName = "Adicionar";
                btnAdicionar.CommandArgument = produto.pro_cod_produto + "#" + lblPreco.Text;

                btnDetalhes.CommandName = "Detalhes";
                btnDetalhes.CommandArgument = "~/Produtos/Detalhes.aspx?codigo=" + Server.UrlEncode(produto.pro_cod_produto);

            }
        }

        protected void dlProdutoInteresse_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName.Equals("Adicionar"))
            {
                string[] argumento = ((Button)e.CommandSource).CommandArgument.Split('#');
                string codigoProduto = argumento[0];
                tb_pro_produto produto = _produtoModel.ObterPorCodigo(Server.UrlDecode(codigoProduto));

                Carrinho.Instance.Adicionar(produto, 1, decimal.Parse(argumento[1].Replace("R$", "")));

                Response.Redirect("~/CarrinhoCompras.aspx");

            }
            else if (e.CommandName.Equals("Detalhes"))
            {
                Response.Redirect(e.CommandArgument.ToString());
            }
        }
    }
}